package com.hemerasolutions.v2trainer.service.interfaces;

import java.util.List;
import java.util.Map;

import com.hemerasolutions.v2trainer.model.exercise.Equipment;
import com.hemerasolutions.v2trainer.model.exercise.Exercise;
import com.hemerasolutions.v2trainer.model.exerciseGroup.ExerciseGroup;
import com.hemerasolutions.v2trainer.model.library.Library;
import com.hemerasolutions.v2trainer.model.modality.Modality;
import com.hemerasolutions.v2trainer.model.training.Training;
import com.hemerasolutions.v2trainer.model.users.Academy;
import com.hemerasolutions.v2trainer.model.users.Admin;
import com.hemerasolutions.v2trainer.model.users.Athlete;
import com.hemerasolutions.v2trainer.model.users.PersonalTrainer;
import com.hemerasolutions.v2trainer.model.users.Teacher;
import com.hemerasolutions.v2trainer.service.ExceptionService;

public interface LibraryServiceInterface extends BaseServiceInterface{

	public abstract List<ExerciseGroup> findExerciseGroupsInLibrarys(Map<String,Object> fields);

	public abstract List<Training> findTrainingsInLibrarys(Map<String,Object> fields);

	public abstract List<Training> findTrainingSystemsInLibrarys(Map<String,Object> fields);

	public abstract List<Exercise> findExercisesInLibrarys(Map<String,Object> fields);

	public abstract List<Equipment> findEquipmentsInLibrarys(Map<String,Object> fields);

	public abstract List<Modality> findModalitysInLibrarys(Map<String,Object> fields);

	public abstract void init();

	public abstract List<Library> copyPublicLibrarys();

	public abstract Library createLibrary(Library library) throws ExceptionService;
	
	public abstract Library saveLibrary(Library library) throws ExceptionService;
	
	public abstract void deleteLibrary(Library library) throws ExceptionService;

	List<Library> listPublicAdminLibrarys();

	public abstract List<Library> readPublicLibrarys();

	public abstract List<Library> readLibrarys(Academy academy);
	
	public abstract List<Library> readLibrarys(Admin admin);

	public abstract List<Library> readLibrarys(Athlete athlete);

	public abstract List<Library> readLibrarys(PersonalTrainer pt);

	public abstract List<Library> readLibrarys(Teacher teacher);

	
}
